﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BE;
using BLL;
using VentaPorCatalogos.UserControls;
using BLL.Exceptions;

namespace VentaPorCatalogos
{
    public partial class Barrios : Page
    {

        #region "Events"
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
               
                ViewState.Add("FormBehavior", behavior.Initial);
                Session["SearchCriteria"] = null;
                Session["Model"] = null;

                // CargarGrilla(Selector.Primera, "ASC");
                //cargar provincia
                CargarProvincia();
                // iniciar combo
                IniciarCombo();
            }
        }

        private void IniciarCombo()
        {
            try
            {
                ddlLocalidad.Items.Add(new ListItem("Seleccione", "0"));
            }
            catch (Exception)
            {

                throw;
            }
        }
        #region "Buttons"
        protected void botComandos_OnBotonClick(object sender, BotoneraEventArgs e)
        {
            try
            {
                BarrioBE oBarrioBE = new BarrioBE();
                LocalidadBE oLocalidadBE = new LocalidadBE();
                ProvinciaBE oProvinciaBE = new ProvinciaBE();

                behavior wComportamiento;

                switch (e.Boton)
                {
                    case BotonesTipos.Buscar:
                        if (BuscarElemento())
                            SetFormBehaviour(behavior.View);
                        else
                            e.CancelarOperacion = true;  // Evita que la botonera pase a modo consulta, si no se encontró un elemento.                        
                        break;
                    case BotonesTipos.Nuevo:
                        SetFormBehaviour(behavior.New);
                        HabilitarControles(true);
                        BlanquearControles(divCampos.Controls);
                        break;
                    case BotonesTipos.Editar:
                         SetFormBehaviour(behavior.Edit);
                        HabilitarControles(true);
                        break;
                    case BotonesTipos.Eliminar:
                        //ViewState.Add("FormBehavior", behavior.Delete);
                        break;
                    case BotonesTipos.Aceptar:
                        wComportamiento = (behavior)ViewState["FormBehavior"];
                        oBarrioBE.Descripcion = txtDescripcion.Text;
                        oLocalidadBE.IdLocalidad = Convert.ToInt32(ddlLocalidad.SelectedValue);
                        oBarrioBE.pLocalidadBE = oLocalidadBE; 

                        switch (wComportamiento)
                        {
                            case behavior.New:
                                BarrioBLL.InsertarBarrio(oBarrioBE);
                                break;
                            case behavior.Edit:
                                oBarrioBE.IdBarrio = Convert.ToInt32(lblIdBarrio.Text);
                                BarrioBLL.ModificarBarrio(oBarrioBE);
                                break;
                            //case behavior.Delete:
                                //BarrioBLL.DeleteBarrio(oBarrioBE);
                                //break;
                        }
                        CargarGrilla(Selector.Primera, "ASC");
                        break;
                    case BotonesTipos.Cancelar:
                        break;
                    default:
                        break;
                }
            }
            catch (BLLException bllEx)
            {
                MostrarMensaje(bllEx.Message);
            }
            catch (Exception)
            {
                MostrarMensaje("Se ha producido un inconveniente procesando la operación. Por favor intente nuevamente.");
            }
        }

        private bool BuscarElemento()
        {
            try
            {
                BarrioBE oBarrioBE = new BarrioBE();
                int IdBarrio;
                if (Int32.TryParse(hidIdElemento.Value, out IdBarrio))
                    oBarrioBE.IdBarrio = IdBarrio;

                oBarrioBE = BarrioBLL.SeleccionarPorId(oBarrioBE);  
                //SetModel<BarrioBE>(oBarrioBE);

                txtDescripcion.Text = oBarrioBE.Descripcion;
                lblIdBarrio.Text = oBarrioBE.IdBarrio.ToString();
                //ddlLocalidad.SelectedValue = oBarrioBE.pLocalidadBE.IdLocalidad.ToString(); 

                return true;
            }
            catch (Exception)
            { }
            return false;
        }
        #endregion

        #region "Grid"
        protected void gdvBarrios_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                int index = Convert.ToInt32(e.CommandArgument);
                int id = Convert.ToInt32(gdvBarrios.DataKeys[index].Value);

                BarrioBE oBarrioBE = new BarrioBE();
                oBarrioBE.IdBarrio = id;

                oBarrioBE = BarrioBLL.SeleccionarPorId(oBarrioBE);
                txtDescripcion.Text = oBarrioBE.Descripcion;
                lblIdBarrio.Text = oBarrioBE.IdBarrio.ToString();
                //ddlLocalidad.SelectedValue = oBarrioBE.pLocalidadBE.IdLocalidad.ToString();  
            }
            catch (Exception)
            { throw; }
        }

        protected void pagGrilla_OnComandoPagina(object sender, PaginadorEventArgs e)
        {
            CargarGrilla(e.Comando, "ASC");
        }
        #endregion

        #region "DropDownList"
        protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            LocalidadBE oLocalidadBE = new LocalidadBE();
            ProvinciaBE oProvinciaBE = new ProvinciaBE();
            try
            {
                oProvinciaBE.IdProvincia = Convert.ToInt32(ddlProvincia.SelectedValue);
                oLocalidadBE.pProvinciaBE = oProvinciaBE;
                CargarLocalidades(oLocalidadBE);
            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion
        #endregion


        #region "Methods"
        protected void CargarGrilla(Selector pnSelector, string pszOrden)
        {
            try
            {
                int wCountReg = 0;
                pagGrilla.CompPaginador(pnSelector);
                List<BarrioBE> oListBarrioBE = null;
                oListBarrioBE = BarrioBLL.SeleccionarTodos(cPageSize, pagGrilla.Pagina, ref wCountReg);
                gdvBarrios.DataSource = oListBarrioBE;
                gdvBarrios.DataBind();
                pagGrilla.PaginadorMethod(wCountReg, pnSelector, cPageSize);
            }
            finally
            {
                ;
            }
        }

        private void CargarProvincia()
        {
            try
            {
                int wCountReg = 0;
                List<ProvinciaBE> ListProvinciaBE = new List<ProvinciaBE>();
                ListProvinciaBE = ProvinciaBLL.SeleccionarTodos(null, null, ref wCountReg);
                ddlProvincia.DataSource = ListProvinciaBE;
                ddlProvincia.DataTextField = "Descripcion";
                ddlProvincia.DataValueField = "IdProvincia";
                ddlProvincia.DataBind();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
        #endregion

        private void CargarLocalidades(LocalidadBE pLocalidadBE)
        {
            try
            {
                int wCountReg = 0;
                List<LocalidadBE> ListLocalidadBE = new List<LocalidadBE>();
                ListLocalidadBE = LocalidadBLL.SeleccionarTodos(pLocalidadBE, null, null, ref wCountReg);
                ddlLocalidad.DataSource = ListLocalidadBE;
                ddlLocalidad.DataTextField = "Descripcion";
                ddlLocalidad.DataValueField = "IdLocalidad";
                ddlLocalidad.DataBind();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }


        protected override void Render(HtmlTextWriter writer)
        {
            foreach (GridViewRow r in gdvBarrios.Rows)
            {
                if (r.RowType == DataControlRowType.DataRow)
                {
                    r.ToolTip = "Haga click para seleccionar";
                    r.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.gdvBarrios, "Select$" + r.RowIndex, true);

                }
            }

            base.Render(writer);
        }


    }
}